﻿using System;
using System.IO;

using gKodes.Collections;

namespace gKodes.IO
{
    public interface IDataSource : IDisposable
    {
        long Length { get; }

        Range Range { get; }

        byte this[int offset] { get; }

        Range Load(long offset, int length);

        int Read(byte[] buffer, int offset, int count);

        void Write(long offset, short nibble, byte value);
    }
}